'use strict';

// 写增删改查的业务逻辑
// 写在Service里 然后controller调用Service
const Service = require('egg').Service;
const uuid = require('uuid');
class UserInfoService extends Service {

  // 在关系数据库中，一个事务可以是一条SQL语句，一组SQL语句或整个程序。
  // 事务是恢复和并发控制的基本单位。
  async addUserInfo (user, transaction) {
    console.log('--------------addUserInfo-----------------------');
    console.log(user);
    user.register_time = new Date();
    // 表示将v1字符串中'-'开头的子字符串替换为'gm'
    // 通用唯一识别码（Universally Unique Identifier）
    // 目的是让分布式系统中的所有元素都能有唯一的识别信息。
    user.id = uuid.v1().replace(new RegExp('-', 'gm'), '');

    const users = await this.app.model.UserInfo.create(user, { transaction });
    // 返回保存用户的信息
    return users;
  }

  async getUserInfoList (user_id) {
    console.log('--------------getUserInfoList-----------------------');
    const { QueryTypes } = require('sequelize');
    const list = await this.app.model.query(
      'select ui.* from user_info ui,user_relation ur WHERE ui.id=ur.info_id and ur.user_id =:user_id',
      {
        replacements: { user_id },
        type: QueryTypes.SELECT,
      });
    return list;
  }


}

module.exports = UserInfoService;
